第01章
重构初探
什么是代码重构?重构与重写的区别、重构的时机与原则。
基础理念
第02章
代码坏味道(上)
重复代码、过长函数、过大的类、过长参数列表。
坏味道识别
第03章
代码坏味道(下)
发散式变化、霰弹式修改、依恋情结、数据泥团。
坏味道重构信号
第04章
重构基本功
提取函数、内联函数、提炼变量、内联变量。
手法基础
第05章
函数重构(上)
分解条件表达式、合并条件表达式、以卫语句取代嵌套条件。
条件简化
第06章
函数重构(下)
引入参数对象、保持对象完整、以查询取代参数。
参数封装
第07章
数据重构
自封装字段、以对象取代数组、以类取代类型码。
数据封装
第08章
条件逻辑重构
分解条件、合并条件、以多态取代条件表达式。
多态条件
第09章
继承体系重构(上)
提取超类、提取子类、折叠继承体系。
继承层次
第10章
继承体系重构(下)
以委托取代继承、以继承取代委托、提炼接口。
委托接口
第11章
C语言内存管理优化
动态内存分配策略、内存池设计、减少内存碎片。
内存性能
第12章
指针使用技巧
指针算术优化、函数指针应用、const指针的正确用法。
指针安全
第13章
宏定义与内联函数
宏的陷阱、内联函数替代宏、条件编译优化。
宏内联
第14章
结构体与联合体优化
内存对齐、位域使用、联合体的妙用。
结构体内存
第15章
循环优化
循环展开、循环合并、减少循环内函数调用。
循环加速
第16章
分支预测优化
likely/unlikely宏、减少分支、查表法替代分支。
分支预测
第17章
缓存友好代码
数据局部性、结构体布局优化、预取指令。
缓存局部性
第18章
编译器优化
O0/O1/O2/O3选项、profile-guided optimization、__attribute__使用。
编译选项
第19章
多文件项目管理
头文件设计、模块化拆分、避免循环依赖。
模块依赖
第20章
静态分析工具
PC-Lint、Cppcheck、Clang Static Analyzer使用。
静态分析质量
第21章
单元测试框架
CUnit、Unity、CMock入门与实战。
测试框架
第22章
代码审查技巧
审查清单、常见问题、如何给出建设性反馈。
审查协作
第23章
版本控制与重构
Git分支策略、重构提交规范、代码回滚技巧。
Git分支
第24章
性能分析工具
gprof、Valgrind、perf工具链使用。
性能分析
第25章
嵌入式C优化
资源受限环境下的优化策略、ROM/RAM权衡。
嵌入式资源
第26章
安全编码实践
缓冲区溢出防护、整数溢出检查、格式化字符串安全。
安全防御
第27章
并发编程优化
原子操作、内存屏障、锁优化策略。
并发锁
第28章
设计模式在C中的应用
单例模式、工厂模式、观察者模式的C实现。
设计模式C语言
第29章
大型项目重构案例
Linux内核模块重构、嵌入式固件重构实战。
案例实战
第30章
重构文化养成
持续重构、技术债务管理、团队协作重构流程。
文化团队